In order to increase fault tolerance in a group of data storage devices, data mirroring is often implemented. Previously, data mirroring has been implemented in redundant array of inexpensive discs (RAID). Data mirroring may be implemented in RAID devices by writing duplicate instances of data to each of two or more disc drives in the RAID device. Conventional RAID mirroring schemes use controlling technology outside the disc drive to manage the duplicated data, such as in a RAID controller. The RAID controller, either in the form of software or hardware, manages which instance of data to read. The data has to be written at least twice to synchronize the mirrored data every time there is a write request. This can cause a performance problem because the number of write requests has increased and correspondingly the time to complete them has increased.
On the other hand, data mirroring has also been performed in single disc drives. Data mirroring in a single drive poses the same problems as data mirroring in a RAID system, as well as additional problems. For instance, the average latency of an unqueued read request in a non-mirrored disc drive is one half revolution because the one instance of data that is read is one-half of a revolution away from the head when the read request is initiated. To improve the inherent latency problems in a disc drive, data mirroring has been incorporated into disc drives. By placing mirrored data on the same disc drive at different angular positions, the latency problems associated with a read request have been substantially lowered. This is accomplished because the multiple copies of data, usually placed 180 degrees opposed from each other, reduces the average latency of a read request to one-quarter of a revolution. However, the benefits of the performance gain for read requests is offset by the performance loss of the write requests.
The problem is that a write request must either write all copies immediately or deal with complications of having different data on the copies. If all copies are written immediately, then the average latency of an unqueued write request is three-quarters of a revolution; one-quarter for the first copy to be written and one-half for the second copy to be written.
What is needed is a system, method and/or apparatus that manages the reading and writing of mirrored data in a manner that minimizes the performance degradation during writes, yet provides the ability to read the most recently written data.